Jackson একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Jackson দুটি প্রধান পদ্ধতির মাধ্যমে JSON ডেটা ম্যানিপুলেট করতে দেয়: Tree Model এবং Object Model। এদের প্রত্যেকটির নিজস্ব বৈশিষ্ট্য এবং ব্যবহারক্ষেত্র রয়েছে। নিচে এদের মধ্যে প্রধান পার্থক্য এবং উদাহরণ দেওয়া হলো।
1. Tree Model
Tree Model JSON ডেটাকে একটি tree-like structure-এ রূপান্তরিত করে। এতে JSON ডেটা DOM (Document Object Model) এর মতো নোড আকারে উপস্থাপিত হয়, যেখানে JSON ডেটা dynamic এবং non-typed হয়।
বৈশিষ্ট্য:
- JSON ডেটা dynamic এবং flexible।
- JSON স্ট্রাকচার পরিবর্তন এবং নেভিগেট করার সুবিধা।
- টাইপ সেফটি নেই (type-safe নয়)।
- ছোট বা অজানা স্ট্রাকচারের JSON ডেটা প্রক্রিয়াকরণের জন্য কার্যকর।
JsonNodeক্লাসের মাধ্যমে ডেটা পরিচালিত হয়।
Tree Model উদাহরণ:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TreeModelExample {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"zip": "10001"
}
}
""";
ObjectMapper mapper = new ObjectMapper();
// JSON কে Tree Model এ রূপান্তর
JsonNode rootNode = mapper.readTree(json);
// ডেটা নেভিগেশন
String name = rootNode.get("name").asText();
int age = rootNode.get("age").asInt();
String city = rootNode.get("address").get("city").asText();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
}
}
আউটপুট:
Name: John Doe
Age: 30
City: New York
2. Object Model
Object Model JSON ডেটাকে সরাসরি Java Objects এ map করে। এটি type-safe এবং strongly-typed।
বৈশিষ্ট্য:
- JSON ডেটা সরাসরি Java ক্লাসে bind হয়।
- Type-safe এবং well-structured।
- Pre-defined ডেটা স্ট্রাকচার থাকা দরকার।
- ডেটার সাথে কাজ করা সহজ, কারণ এটি সরাসরি Java Objects এ রূপান্তরিত হয়।
- Serialization এবং Deserialization সহজতর হয়।
Object Model উদাহরণ:
import com.fasterxml.jackson.databind.ObjectMapper;
public class ObjectModelExample {
public static void main(String[] args) throws Exception {
String json = """
{
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"zip": "10001"
}
}
""";
ObjectMapper mapper = new ObjectMapper();
// JSON কে Java Object এ রূপান্তর
Person person = mapper.readValue(json, Person.class);
// Java Object এর ডেটা প্রিন্ট করা
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("City: " + person.getAddress().getCity());
}
}
// Java Class Definitions
class Person {
private String name;
private int age;
private Address address;
// Getters and Setters
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public Address getAddress() { return address; }
public void setAddress(Address address) { this.address = address; }
}
class Address {
private String city;
private String zip;
// Getters and Setters
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
public String getZip() { return zip; }
public void setZip(String zip) { this.zip = zip; }
}
আউটপুট:
Name: John Doe
Age: 30
City: New York
Tree Model vs Object Model: পার্থক্য
| ফিচার | Tree Model | Object Model |
|---|---|---|
| ব্যবহারিক কাঠামো | JSON ডেটাকে নোড হিসেবে উপস্থাপন করে। | JSON ডেটা সরাসরি Java Objects এ ম্যাপ করে। |
| ডেটা টাইপ | Dynamic এবং Non-typed। | Type-safe এবং Strongly-typed। |
| ডেটা প্রসেসিং | Unknown বা Flexible JSON স্ট্রাকচারের জন্য কার্যকর। | Pre-defined স্ট্রাকচারের জন্য কার্যকর। |
| Performance | তুলনামূলক ধীর, কারণ নেভিগেশনের প্রয়োজন। | দ্রুত, কারণ সরাসরি Object এ কাজ করে। |
| API Class | JsonNode (Tree-like structure)। | Custom Java POJO Classes। |
| ব্যবহার ক্ষেত্র | Dynamic বা জটিল JSON প্রক্রিয়াকরণ। | Simple এবং Pre-defined JSON স্ট্রাকচার। |
- Tree Model: অজানা বা ডায়নামিক JSON ডেটার জন্য ব্যবহার করুন।
- Object Model: Type-safe এবং নির্ধারিত ডেটা স্ট্রাকচারের JSON প্রক্রিয়াকরণের জন্য আদর্শ।
আপনার প্রয়োজন অনুসারে সঠিক মডেল নির্বাচন করা গুরুত্বপূর্ণ।
Read more